<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
	</head>
	<body>
	</body>
	<script type="text/javascript">
		// Object.keys 返回一个数组，返回索引列表  (返回可枚举的属性)
		// var arr = ['a','b','c']
		// console.log(Object.keys(arr));
		//Object.getOwnPropertyNames  也能返回不可枚举的属性，比如length属性。
		// Object.getOwnPropertyNames()
		
		//  
		// var obj = {};
		// obj.name = 'fyr';
		// console.log(Object.getOwnPropertyDescriptor(obj,'name'));
		// /*
		// {value: "fyr", writable: true, enumerable: true, configurable: true}
		// configurable: true
		// enumerable: true
		// value: "fyr"
		// writable: true
		// */
		
		// var obj = Object.defineProperties({},{
		// 	p1:{
		// 		value : 'fyr',
		// 		enumerable : true
		// 	},
		// 	p2{
		// 		value : 'zmq',
		// 		enumerable:true
		// 	}
		// 	p3{
		// 		get:function(){
		// 			return this.p1 + this.p2,
		// 			enumerable : true,
		// 			configurable: true
		// 		} 
		// 	}
		// })
		
		// enumerable 可便利性。 一旦设置为false 通常一下三个操作不会取到该属性。
		// for...in  Object.keys() JSON.stringify() 
		
		//configurable 可配置性，决定是否我们可以修改属性描述对象
		一旦设置为false 则value writable enumrable confirgable 都不能被修改.
		但是 writable 由true改false可以修改.
	</script>
</html>
